using namespace std;

#include "Buffer.h"

Buffer::Buffer(int tamanioMAX){
	this->taminioMAX = tamanioMAX;
	this->cantComponenteEnMemoria = 0;	
}

int Buffer::escribir(Componente& componente, int offset){
	datos.push_back(&componente);
	this->cantComponenteEnMemoria++;
	return this->cantComponenteEnMemoria-1;
}
Componente* Buffer::leer(int offset){
	// TODO ver como se maneja el tema del offset. Recibe el offset del archivo, inutil.
	return datos[offset];
}
void Buffer::borrar(int offset){
	// TODO ver como se maneja el tema del offset. Recibe el offset del archivo, inutil.

}
void Buffer::imprimir(){}

int Buffer::buscarEspacioLibre(int){
	//devuelve la posicion para insertar... ,sino -1
	if (this->datos.size()<=this->taminioMAX){
		return this->datos.size();
	}
	else return -1;
}


// Textos
void Buffer::modificarTexto(Componente&){}
void Buffer::borrarTexto(Componente&){}
Componente* Buffer::leerTexto(int){}
void Buffer::escribirTexto(Componente&){}


int Buffer::eof(){
	return (datos.size()-1);
}

//no hace falta o no aporta al manejo del buffer
void Buffer::crearMetadata(char tipo, int tamanio, list<string> tipos, list<bool> claves){}
void Buffer::inicializarMetadata(char tipo){}
Metadata* Buffer::abrir(char tipo){
	return NULL;
}
void Buffer::cerrar(){}

int Buffer::getcantidadBloques(){
	return this->cantComponenteEnMemoria;
}
int Buffer::aumentarComponentesBloques(){}
int Buffer::getOffsetComienzoDatos(){}
